package org.example.rowing.service;

import org.example.rowing.domain.RoundScore;
import org.example.rowing.domain.Team;
import org.example.rowing.vo.RaceVO;
import org.example.rowing.vo.RoundScoreVO;

import java.util.ArrayList;
import java.util.List;

public interface OverRaceProcessStrategy {

    /**
     * 获取计时赛晋级预赛的列表
     * @param curList
     * @param raceId
     */
    void getTimeTrialToPre(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取预赛晋级1/4决赛的列表
     * @param curList
     */
    void getPreToQuarterFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取预赛晋级半决赛的列表
     * @param curList
     */
    void getPreToSemiFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取预赛晋级复赛的列表
     * @param curList
     * @param raceId
     */
    void getPreToIntermediary(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取复赛晋级1/4决赛的列表
     * @param curList
     * @param raceId
     */
    void getInterToQuarterFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取复赛晋级半决赛的列表
     * @param curList
     * @param raceId
     */
    void getInterToSemiFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取1/4决赛晋级半决赛的列表
     * @param curList
     * @param raceId
     */
    void getQuarterToSemiFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取复赛晋级决赛的列表
     * @param curList
     * @param raceId
     */
    void getInterToFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取半决赛晋级决赛的列表
     * @param curList
     * @param raceId
     */
    void getSemiToFinal(List<RoundScoreVO> curList, Long raceId);

    /**
     * 获取最终排名
     * @param curList
     * @param raceVO
     * @return
     */
    List<RoundScoreVO> getRank(List<RoundScoreVO> curList, RaceVO raceVO);
}
